package com.caius.xiaohashu.comment.biz.constant;

/**
 * @author Caius
 * @description
 * @since Created in 2025-06-06
 */
public class RedisKeyConstants {
     /**
     * Key 前缀：一级评论的 first_reply_comment_id 字段值是否更新标识
     */
    private static final String HAVE_FIRST_REPLY_COMMENT_KEY_PREFIX = "comment:havaFirstReplyCommentId:";

    /**
     * KEY 前缀： 笔记评论总数
     */
    private static final String COUNT_COMMENT_TOTAL_KEY_PREFIX = "count:note:" ;

    /**
     * Hash Field 键: 评论总数
     */
    public static final String FIELD_COMMENT_TOTAL = "commentTotal";

    /**
     * Key 前缀： 评论分页 ZSET
     */
    private static final String COMMENT_LIST_KEY_PREFIX = "comment:list:";

    /**
     * Key 前缀: 评论详情 JSON
     */
    private static final String COMMENT_DETAIL_KEY_PREFIX = "comment:detail:";

    /**
     * 评论构建的 Key
     */
    private static final String COMMENT_COUNT_KEY_PREFIX = "count:comment:";

    /**
     * Hash Field：子评论总数
     */
    public static final String FIELD_CHILD_COMMENT_TOTAL = "childCommentTotal";

    /**
     * Hash Field: 点赞总数
     */
    public static final String FIELD_LIKE_TOTAL = "likeTotal";

    /**
     * 子评论分页列表构建的 Key
     */
    private static final String CHILD_COMMENT_LIST_KEY_PREFIX = "comment:childList:";

    /**
     * Key 前缀： 布隆过滤器 - 用户点赞的评论
     */
    private static final String BLOOM_COMMENT_LIKES_KEY_PREFIX = "bloom:comment:like";

    /**
     * 构建完整 KEY
     * @param commentId
     * @return
     */
    public static String buildHaveFirstReplyCommentKey(Long commentId) {
        return HAVE_FIRST_REPLY_COMMENT_KEY_PREFIX + commentId;
    }

    /**
     * 构建笔记总数完整 KEY
     * @param noteId
     * @return
     */
    public static String buildCountCommentTotalKey(Long noteId) {
        return COUNT_COMMENT_TOTAL_KEY_PREFIX + noteId;
    }

    /**
     * 构建完整评论列表 KEY
     * @param noteId
     * @return
     */
    public static String buildCommentListKey(Long noteId) {
        return COMMENT_LIST_KEY_PREFIX + noteId;
    }

    /**
     * 构建评论详情完整 KEY
     * @param commentId
     * @return
     */
    public static String buildCommentDetailKey (Object commentId) {
        return COMMENT_DETAIL_KEY_PREFIX + commentId;
    }

    public static String buildCommentCountKey(Long commentId) {
        return COMMENT_COUNT_KEY_PREFIX + commentId;
    }

    public static String buildChildCommentListKey(Long commentId) {
        return CHILD_COMMENT_LIST_KEY_PREFIX + commentId;
    }

    /**
     * 构建 布隆过滤器 - 用户点赞的评论 完整 Key
     * @param userId
     * @return
     */
    public static String buildBloomCommentLikesKey(Long userId) {
        return BLOOM_COMMENT_LIKES_KEY_PREFIX + userId;
    }

}
